---
title: Testing in Apollo Kotlin
description: Overview
---

Apollo Kotlin provides the following tools to help with testing your code:

- [`MockServer`](./mocking-http-responses) (experimental): an HTTP server that you can use to mock any responses
- [`TestNetworkTransport`](./mocking-graphql-responses) (experimental): lets you specify the GraphQL responses returned by `ApolloClient`
- [Data builders](./data-builders) (experimental): help instantiate your model classes by providing a DSL

`MockServer` creates a full HTTP server. It requires minimal changes to your production code (you only need to change `serverUrl`), which means you can use the same `ApolloClient` for tests and production. `MockServer` is also useful for testing specific server behaviors, such as error cases, HTTP headers, and timeouts.

`TestNetworkTransport` bypasses HTTP calls altogether and returns predefined GraphQL responses. It requires more modifications to your production code, but you can use it in lighter tests that don't need to create a server. You can use data builders to instantiate the data in the responses.
